Neither of these facilities is available in the same way under IRIX. Each EISA device is configured to IRIX using a VECTOR line in a file stored in the directory /var/sysgen/system (see "System Configuration Files").
The syntax of a VECTOR line is documented in two places:
The important elements in a VECTOR line for EISA are as follows:
bustype | Specified as EISA for EISA devices. The VECTOR statement can be used for other types of buses as well. |
module | The base name of a kernel-level device driver for this device, as used in the /var/sysgen/master.d database (see "Master Configuration Database" and "How Names Are Used in Configuration"). |
adapter | The number of the EISA bus where the device is attached--always 0, or omitted, in current systems. |
ctlr | The "controller" number is simply an integer parameter that is passed to the device driver at boot time. It can be used for example to specify a slot number. |
iospace, iospace2, iospace3 | Each iospace group specifies the address space, the starting address, and the size of a segment of address space used by this device. |
probe or exprobe | Specifies a hardware test that can be applied at boot time to find out if the device exists. |
The following is a typical VECTOR line for an EISA device (it must be a single physical line in the file):
VECTOR: bustype=EISA module=if_ec3 ctlr=1 iospace=(EISAIO,0x1000,0x1000) exprobe_space=(r,EISAIO, 0x1c80,4,0x6010d425,0xffffffff)
An example exprobe parameter is as follows:
The exprobe parameter lists groups of six subparameters, as follows:exprobe_space=(r,EISAIO, 0x1c80,4,0x6010d425,0xffffffff)
Sequence | One or more of w for write, r for read, or rn for read-negate. |
Space | EISAIO or EISAMEM. |
Address | The address of the byte, halfword, or word to test. |
Length | The number of bytes to test: 1, 2, or 4. |
Value | The value to write, or the test value for a read. |
Mask | A number to be ANDed with the Value operand before a write or after a read. Specify 0xffffffff to nullify the AND operation. |
You can use the w operation to prime a device. You can use the r operation to test for a specific value, and the rn operation to test that a specific value (or a specific bit, after masking) is not returned.
Typically, a simple r operation is used on an EISA card to test for the manufacturer's product identifier.
To test the existence of an ISA card, use a wr sequence to write a value to a register and read it back unchanged. Or read a value and verify that it does not come back all-binary-1, the value returned by a nonexistent device.
You use the iospace parameters to pass in the exact bus addresses that correspond to this device. Up to three address space ranges can be passed to the driver. This does not restrict the device--it can use other ranges of addresses, but the device driver has to deduce their addresses from other information. The device driver typically uses this data to set up PIO maps (see "Mapping PIO Addresses").